//package com.basin.admin.service.impl;
//
//import com.baomidou.mybatisplus.core.toolkit.Wrappers;
//import com.basin.admin.mapper.FrontAppMapper;
//import com.basin.admin.pojo.convert.FrontAppConverter;
//import com.basin.admin.pojo.entity.FrontAppEntity;
//import com.basin.admin.pojo.vo.FrontAppVO;
//import com.basin.admin.repository.FrontAppRepository;
//import com.basin.admin.service.FrontAppService;
//import com.basin.common.core.exception.BasinAssert;
//import com.basin.common.core.exception.BasinException;
//import com.basin.common.mybatisplus.base.BaseServiceImpl;
//import org.springframework.stereotype.Service;
//
//import java.util.List;
//import java.util.stream.Collectors;
//
/// **
// * @author: Sam ZHONG | sammy1997@aliyun.com
// */
//@Service
//public class FrontAppServiceImpl extends BaseServiceImpl<FrontAppEntity, FrontAppMapper, FrontAppRepository> implements FrontAppService {
//    @Override
//    public boolean save(FrontAppEntity entity) {
//        // 唯一校验
//        String code = entity.getCode();
//        String name = entity.getName();
//        boolean exists = this.repository.exists(Wrappers.<FrontAppEntity>lambdaQuery()
//                .eq(FrontAppEntity::getCode, code)
//                .or().eq(FrontAppEntity::getName, name));
//        BasinAssert.isTrue(!exists, "应用编码或应用名称已存在");
//        return this.repository.save(entity);
//    }
//
//    @Override
//    public boolean update(FrontAppEntity entity) {
//        Long id = entity.getId();
//        FrontAppEntity dbData = this.repository.getOptById(id)
//                .orElseThrow(() -> new BasinException("数据不存在"));
//        boolean sameCode = entity.getCode().equals(dbData.getCode());
//        BasinAssert.isTrue(!sameCode, "应用编码禁止更新");
//        String dtoName = entity.getName();
//        boolean sameName = dtoName.equals(dbData.getName());
//        if (!sameName) {
//            // 不同名字要校验新名称是否已被使用
//            boolean exists = this.repository.exists(Wrappers.<FrontAppEntity>lambdaQuery()
//                    .eq(FrontAppEntity::getName, dtoName));
//            BasinAssert.isTrue(exists, "应用名称已存在");
//        }
//        return this.repository.updateById(entity);
//    }
//
//    @Override
//    public boolean delete(List<FrontAppEntity> entities) {
//        return this.repository.removeByIds(entities.stream()
//                .map(FrontAppEntity::getId)
//                .collect(Collectors.toList()));
//    }
//
//    @Override
//    public FrontAppVO detail(Object code) {
//        FrontAppEntity frontAppEntity = new FrontAppEntity() {{
//            setId(1L);
//            setTenantId(1L);
//            setCode("222");
//        }};
//        return FrontAppConverter.INSTANCE.entity2Vo(frontAppEntity);
//    }
//}
